Lifecycle is a formal evolution and change through the recurrence of a certain organism from its initial phase to the same phase in its next generation. In different fields, lifecycle has various detailed explanations for different objects.
For example, in the case that said objects are certain products, the lifecycle involves all phases of the products, e.g., designing, manufacturing, packaging, storing, selling, etc. In the service-oriented architecture where said objects are services, the lifecycle starts with a service definition and ends with a service retirement. The following is a detailed description about a lifecycle using a service as an example. More specifically, the service lifecycle includes various phases and states that the service may experience, such as defined, modeled, assembled, deployed and managed, as well as transitions between these states, for example, the developing process from the assembled state to the deployed state, or the testing process from the deployed state to the managed state. Each transition relates to certain roles, for example, the developing process is executed by developers and the testing process is executed by testers. Therefore, the service lifecycle involves so many factors, such as various states, various transitions and various roles that how to manage it has become an issue. For example, it is desired that a lifecycle management system could enable managers to track service states in different phases, differentiate their corresponding authority when different roles log into such a management system, and provide a proper transition path and specify the involved roles when a service transits from one state to another. To realize the above management, there is a need to know and express the various information in the lifecycle, especially role-based access control information. For instance, who, when and how to change and transit a service, etc. However, the existing techniques fail to meet the needs of the above-described lifecycle management.
Usually, the lifecycle can be represented using a state machine. A state machine is a type of directional diagram, which depicts various states and the transitions between these different states. In a traditional object-oriented approach, state machine diagrams are used to illustrate the behavior of an object and how an object responds to various events, including internal and external stimulus. In the existing techniques, multiple languages have been adopted to describe a state machine and a lifecycle.
UML state machine diagrams describe the behavior and change of a class over time by presenting the state and transition of a single object progressing through its lifecycle. The UML 2.0 state machine is a representation of a finite state machine. In the industrial and academic world, there have been applied many UML 2.0 state machine products. These products include IBM Rational Software Architect, Altova UModel 2008, UML State Machine Wizard, SDE for JDeveloper, etc. However, these state machine products mainly focus on the graphic illustration of a state machine. They consider roles and access control only as a common condition in the state machine, and therefore cannot judge which states can be accessed and which transitions are authorized for a certain role.
SCXML (State Chart XML) is another state machine notation based on UML 2.0, combining the conception from CCXML (Call Control XML) and Harel State Tables. Similar with UML 2.0, SCXML cannot consider role-based access control and therefore cannot judge the reachable states and the executable transitions of roles when describing the state machine.
SACL (State Adaptive Choreography Language) is another language to define a state machine, and is specifically designed to be used for a business state machine in a WebSphere Process Server. However, this language does not contain role-based access control either.
Moreover, the above-described UML, SCXML and SACL languages for presenting a state machine and lifecycle do not have semantics presenting ability, so further translation is necessary in the case that semantics are needed.
Web Ontology Language (OWL) is a semantics-based language used to publish and share ontology in the network. In some products, OWL is also used to describe the lifecycle. However, the current OWL files neither incorporate the information about role-based access control, nor utilize the reasoning ability of OWL itself to calculate the authority of each role.
On the other hand, the existing techniques have adopted various languages, for example, XACML (extensible Access Control Markup Language), to describe access control and role authority. However, these languages usually cannot describe the state machine and lifecycle.
Therefore, in the existing lifecycle management systems, when a user logs into a management system and wants to execute transitions and operations within its authority, the system first needs to get the user's authority description from XACML files. The system then reads the state machine described by UML, SACL, etc., translates it into OWL files with semantics content, gets the property information from OWL files and thus obtains the state and transition description in the lifecycle. By connecting the obtained role authority information with the state machine information, the system can finally judge which transitions in the lifecycle the current user can execute.
Obviously, the above management process is complicated and inefficient.